/*
 * myalloc.h
 *
 *  Created on: 07/06/2012
 *      Author: martin
 */


#ifndef MYALLOC_H_
#define MYALLOC_H_

#include <stdint.h>


//bloque de memoria
typedef struct {
	int32_t is_available;
	int32_t size;
} MCB, *MCB_P;
/*MCB: memory control block
 * MCB: puntero al memory control block
 *
 */

//puntero donde inicia mi memoria
char *mem_start_p;
int32_t max_mem;
int32_t allocated_mem; /* memoria en uso. */
//contador de bloques de memoria
int32_t mcb_count;

//puntero donde finaliza mi memoria
char *heap_end;


enum {
	NEW_MCB = 0, NO_MCB, REUSE_MCB
};
enum {
	FREE, IN_USE
};

void InitMem(int32_t size_in_bytes, int32_t minblock);

void * myalloc(int32_t elem_size);

void myfree(void *p);

#endif /* MYALLOC_H_ */
